package com.mybatis.lo.sqlnode;

import com.mybatis.lo.config.DynamicContext;
import com.mybatis.lo.utils.OgnlUtils;
import lombok.AllArgsConstructor;

/**
 * 存储`<if>`动态标签中的内容
 * @author zhangbh
 * 2023-06-09 20:06
 **/
@AllArgsConstructor
public class IfSqlNode implements SqlNode {

    /**
     * 检查用的ognl表达式
     */
    private String test;
    /**
     * if可能含有有多标签
     */
    private SqlNode mixedSqlNode;


    @Override
    public void apply(DynamicContext context) {
        // 使用ognl工具判断校验是否通过，是则调用复合的 mixedSqlNode
        Object param = context.getParam();
        boolean testSuccess = OgnlUtils.evaluateBoolean(test, param);
        if (testSuccess) {
            mixedSqlNode.apply(context);
        } else {
            System.out.println("不符合检查结果 test=" + test);
        }
    }
}
